<template>
  <div class="echarts">
    <div :class="className" :style="{height:height,width:width}" ref="myEchart"></div>
  </div>
</template>
<script>
  import echarts from "echarts";
  //   import '../../node_modules/echarts/map/js/world.js'
  import '../../../node_modules/echarts/map/js/china.js' // 引入中国地图数据
  export default {
    name: "GeoMap",
    props: {
      className: {
        type: String,
        default: 'chart'
      },
      width: {
        type: String,
        default: '100%'
      },
      height: {
        type: String,
        default: '100px'
      },
      chartData: {}
    },
    data() {
      return {
        chart: null
      };
    },
    mounted() {
      this.chinaConfigure();
    },
    beforeDestroy() {
      if (!this.chart) {
        return;
      }
      this.chart.dispose();
      this.chart = null;
    },
    methods: {
      chinaConfigure() {
        let colors = [];
        for (let i = 0; i < 10; i++) {
          colors.push(buildColor('rgba'));
        }
        let myChart = echarts.init(this.$refs.myEchart); //这里是为了获得容器所在位置
        window.onresize = myChart.resize;
        myChart.setOption({ // 进行相关配置
          backgroundColor: "#344b58",
          tooltip: {}, // 鼠标移到图里面的浮动提示框
          dataRange: {
            show: false,
            min: 0,
            max: 1000,
            text: ['High', 'Low'],
            realtime: true,
            calculable: true,
            //color: ['orangered', 'yellow', 'lightskyblue']
            color: ['green', 'yellow', 'red']
            //color: colors
          },
          geo: { // 这个是重点配置区
            map: 'china', // 表示中国地图
            roam: false,//随机放大缩小移动
            label: {
              normal: {
                show: true, // 是否显示对应地名
                textStyle: {
                  color: 'rgba(0,0,0,0.4)'
                }
              }
            },
            itemStyle: {
              normal: {
                areaColor: '#ffffff',
                borderColor: '#eb9111'
              },
              emphasis: {
                areaColor: null,
                shadowOffsetX: 0,
                shadowOffsetY: 0,
                shadowBlur: 20,
                borderWidth: 0,
                shadowColor: 'rgba(0, 0, 0, 0.5)'
              }
            }
          },
          series: [{
            type: 'scatter',
            coordinateSystem: 'geo' // 对应上方配置
          },
            {
              name: this.chartData.name, // 浮动框的标题
              type: 'map',
              geoIndex: 0,
              data: this.chartData.dataList
            }
          ]
        })
      }
    }
  }

  //生成随机颜色
  function buildColor(type) {
    let r = Math.floor(Math.random() * 256);
    let g = Math.floor(Math.random() * 256);
    let b = Math.floor(Math.random() * 256);
    let a = Math.floor(Math.random() * 10) / 10.0;

    let color = '';
    if (type == 'rgba') {
      color = 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';
    } else {
      color = 'rgb(' + r + ',' + g + ',' + b + ')';
    }
    return color;
  }
</script>
